#pragma once
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
class Util
{
public:
    static bool GetOneLineFromBigString(std::string &BigStringRromInternet, std::string *OneLine, const std::string gspace)
    {
        int pos = BigStringRromInternet.find(gspace);
        if (pos == std::string::npos)
            return false;
        *OneLine = BigStringRromInternet.substr(0, pos);
        BigStringRromInternet.erase(0, pos + gspace.size());
        return true;
    }

    static bool ReadFileContent(std::string &targetfile, std::string *text)
    {
        // text->clear();
        // std::ifstream in(targetfile);
        // if(!in.is_open())
        //     return false;
        // std::string line;
        // while(std::getline(in,line))
        // {
        //     *text += line;
        // }
        // in.close();
        // return true;

        int fileSize = FileSize(targetfile); // 读取文本的大小
        if (fileSize > 0)
        {
            std::ifstream in(targetfile, std::ios::binary); // 以二进制的方式读取文本，因为可能会存在图片或者其他格式的文件
            if (!in.is_open())
            {
                LOG(LogLevel::DEBUG) << " open file error";
                return false;
            }
            text->resize(fileSize);
            in.read((char *)text->c_str(), fileSize); // 将内容读取到text？
            in.close();
            return true;
        }
        else
            return false;
    }

    static int FileSize(std::string &path)
    {
        std::ifstream in(path);
        if (!in.is_open())
        {
            LOG(LogLevel::DEBUG) << " open file error";
            return -1;
        }
        in.seekg(0, in.end);  // 将当前光标指向文本末
        int pos = in.tellg(); // 读取当前光标的位置
        in.seekg(0, in.beg);  // 将光标指向文本起始位置
        in.close();
        return pos;
    }
};